/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Pagos.Formularios;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.net.URL;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.util.JRLoader;
import org.apache.commons.mail.EmailAttachment;
import org.apache.commons.mail.HtmlEmail;

/**
 *
 * @author FCCCRTI05
 */
public class NotificarPago extends HttpServlet
{
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException
    {
        //REINICIO DEL BUFFER
        response.reset();
        response.resetBuffer();
        response.setContentType("text/html;charset=ISO-8859-1");
        PrintWriter out = response.getWriter();
        try
        {
            //CONEXION A LA BD
            db.Conexion conectar = (db.Conexion)request.getSession().getAttribute("db");
            Connection conex = conectar.ObtenerConexionSQLServer();
            //DATOS DE USUARIO
            String usuario = conectar.ObtenerUsuario();
            String mail_usuario = conectar.ObtenerMailUsuario();
            //FORMATO DE FECHA SQL SERVER
            SimpleDateFormat sdf_sql = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
            //PARAMETROS
            String compania = "00"+request.getParameter("codigo_compania");
            String email_proveedor = "",banco = "",numero_cheque = "",fecha_cheque = "",moneda_cheque = "";
            double monto_cheque = 0;
            String fecha = sdf_sql.format(new Date());
            String factura = "",numero_factura,fecha_factura = "",moneda_factura = "";
            double monto_factura = 0;
            String jde_id_pago = "";
            //OBTENER TODOS LOS NOMBRES DE LOS PARAMETROS
            Enumeration parametros = request.getParameterNames();
            String nombre_parametro = null;
            //OBTENER TODOS LOS ID DE PROVEEDORES
            int cantidad_proveedores = Integer.parseInt(request.getParameter("cantidad_proveedores"));
            int indice_proveedores = 0;
            String proveedores[] = new String[cantidad_proveedores];
            while (parametros.hasMoreElements())
            {
                nombre_parametro = parametros.nextElement().toString();
                if (nombre_parametro.startsWith("prov"))
                {
                    proveedores[indice_proveedores] = request.getParameter(nombre_parametro);
                    indice_proveedores++;
                }
            }
            //OBTENER TODOS LOS EMAIL DE PROVEEDORES
            String mail_proveedores[] = new String[cantidad_proveedores];
            for (int i=0; i<cantidad_proveedores; ++i)
                mail_proveedores[i] = request.getParameter("mail"+proveedores[i]);
            //OBTENER LOS CHECKBOX ACTIVOS PARA CADA PROVEEDOR
            PreparedStatement pst = null;
            int indice = 0;
            int indice_factura = 0;
            int indice_numero_factura = 0;
            int indice_fecha_factura = 0;
            int indice_moneda_factura = 0;
            String param_factura,sub_factura = "";
            Enumeration parametros_facturas;
            for (int i=0; i<cantidad_proveedores; ++i)
            {
                parametros = request.getParameterNames();
                while (parametros.hasMoreElements())
                {
                    nombre_parametro = parametros.nextElement().toString();
                    if (nombre_parametro.startsWith("check"+proveedores[i]))
                    {
                        jde_id_pago = nombre_parametro;
                        indice = jde_id_pago.indexOf("_",0);
                        jde_id_pago = jde_id_pago.substring(indice+1,jde_id_pago.length());
                        email_proveedor = request.getParameter("mail"+proveedores[i]);
                        banco = request.getParameter("banc"+proveedores[i]+"_"+jde_id_pago);
                        numero_cheque = request.getParameter("cheq"+proveedores[i]+"_"+jde_id_pago);
                        fecha_cheque = request.getParameter("fech"+proveedores[i]+"_"+jde_id_pago);
                        moneda_cheque = request.getParameter("mone"+proveedores[i]+"_"+jde_id_pago);
                        monto_cheque = Double.parseDouble(request.getParameter("mont"+proveedores[i]+"_"+jde_id_pago).replaceAll(",",""));
                        //OBTENER FACTURAS
                        parametros_facturas = request.getParameterNames();
                        while (parametros_facturas.hasMoreElements())
                        {
                            param_factura = parametros_facturas.nextElement().toString();
                            if (param_factura.startsWith("fact"))
                            {
                                indice_factura = param_factura.indexOf("|",0);
                                sub_factura = param_factura.substring(indice_factura+1,param_factura.length());
                                if (sub_factura.equals(jde_id_pago))
                                {
                                    factura = request.getParameter(param_factura);
                                    indice_numero_factura = factura.indexOf("@",0);
                                    numero_factura = factura.substring(0,indice_numero_factura);
                                    indice_fecha_factura = factura.indexOf("|",0);
                                    fecha_factura = factura.substring(indice_numero_factura+1,indice_fecha_factura);
                                    indice_moneda_factura = factura.indexOf("*",0);
                                    moneda_factura = factura.substring(indice_fecha_factura+1,indice_moneda_factura);
                                    monto_factura = Double.parseDouble(factura.substring(indice_moneda_factura+1,factura.length()).replaceAll(",",""));
                                    //GUARDAR DATOS
                                    pst = conex.prepareStatement("insert into F55_PAGOS_DATOS values"+
                                    "("+"'"+compania+"'"+","+"'"+proveedores[i]+"'"+","+"'"+email_proveedor+"'"+","+"'"+banco+"'"+","+
                                    "'"+numero_cheque+"'"+","+"'"+fecha_cheque+"'"+","+"'"+moneda_cheque+"'"+","+monto_cheque+","+
                                    "'"+fecha+"'"+","+"'"+numero_factura+"'"+","+"'"+fecha_factura+"'"+","+"'"+moneda_factura+"'"+","+monto_factura+","+
                                    "'"+jde_id_pago+"'"+","+"'"+usuario+"'"+","+"'"+mail_usuario+"'"+")");
                                    pst.executeUpdate();
                                    pst.close();
                                }
                            }
                        }
                        //ACTUALIZAR ESTADO DEL ID DE PAGO EN TABLA F0413
                        pst = conex.prepareStatement("update TESTDTA.F0413"+
                        " set RMPRGF = 'S' where RMPYID = "+Integer.parseInt(jde_id_pago));
                        pst.executeUpdate();
                        pst.close();
                        //ACTUALIZAR MAIL DEL PROVEEDOR
                        pst = conex.prepareStatement("update TESTDTA.F01151"+
                        " set EAEMAL = "+"'"+email_proveedor+"'"+
                        " where EAAN8 = "+Float.parseFloat(proveedores[i]));
                        pst.executeUpdate();
                        pst.close();
                    }
                }
            }            
            //ENVIAR CORREO A CADA PROVEEDOR
            final Connection conex_final = conex;
            final String compania_final = compania;
            final String proveedores_fina[] = proveedores;
            final String usario_final = usuario;
            final String mail_usuario_final = mail_usuario;
            final String fecha_final = fecha;
            Thread correo = new Thread()
            {
                @Override
                public void run()
                {
                    EnviarCorreoAProveedores(conex_final,compania_final,proveedores_fina,usario_final,mail_usuario_final,fecha_final);
                }
            };
            correo.start();
            //SALIDAS EN HTML
            out.write("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">");
            out.write("<html xmlns=\"http://www.w3.org/1999/xhtml\">"+"\n");
            out.write("<head>"+"\n");
            out.write("<title>Sistema de notificaci&oacute;n de Pagos a Proveedores - FCC Construcci&oacute;n de CA, S.A</title>"+"\n");
            out.write("<!--MENU-->"+"\n");
            out.write("<link rel=\"stylesheet\" href=\"/jde/scripts/menu/menu-bar.css\" media=\"screen\" type=\"text/css\">"+"\n");
            out.write("<script type=\"text/javascript\" src=\"/jde/scripts/menu/menu-for-applications.js\"></script>"+"\n");
            out.write("<link rel=\"stylesheet\" href=\"/jde/scripts/menu/menu-item.css\" media=\"screen\" type=\"text/css\">"+"\n");
            out.write("<script language=\"javascript\" type=\"text/javascript\">"+"\n");
            out.write("window.onload = function()"+"\n");
            out.write("{"+"\n");
            out.write("Reloj();"+"\n");
            out.write("var menuModel = new DHTMLSuite.menuModel();"+"\n");
            out.write("menuModel.addItemsFromMarkup('menuModel');"+"\n");
            out.write("menuModel.setMainMenuGroupWidth(00);"+"\n");
            out.write("menuModel.init();"+"\n");
            out.write("var menuBar = new DHTMLSuite.menuBar();"+"\n");
            out.write("menuBar.addMenuItems(menuModel);"+"\n");
            out.write("menuBar.setTarget('menu');"+"\n");
            out.write("menuBar.init();"+"\n");
            out.write("};"+"\n");
            out.write("function Reloj()"+"\n");
            out.write("{"+"\n");
            out.write("var fecha = new Date ();"+"\n");
            out.write("var hora = fecha.getHours ( );"+"\n");
            out.write("var minuto = fecha.getMinutes ( );"+"\n");
            out.write("var segundo = fecha.getSeconds ( );"+"\n");
            out.write("minuto = (minuto < 10 ? \"0\" : \"\") + minuto;"+"\n");
            out.write("segundo = (segundo < 10 ? \"0\" : \"\") + segundo;"+"\n");
            out.write("var tiempo = (hora < 12 ) ? \"A.M\" : \"P.M\";"+"\n");
            out.write("hora = (hora > 12) ? hora - 12 : hora;"+"\n");
            out.write("hora = (hora == 0) ? 12 : hora;"+"\n");
            out.write("var cadena_hora = hora + \":\" + minuto + \":\" + segundo + \" \" + tiempo;"+"\n");
            out.write("document.getElementById(\"reloj\").innerHTML = \"<b>\"+cadena_hora+\"</b>\";"+"\n");
            out.write("setTimeout(\"Reloj()\",1000);"+"\n");
            out.write("}"+"\n");
            out.write("</script>"+"\n");
            out.write("</head>"+"\n");
            out.write("<body style=\"font-family:Verdana, Geneva, sans-serif; font-size:11px;\">"+"\n");
            //INCLUIR TOP.JSP
            String top = "/Pagos/home/top.jsp";
            RequestDispatcher rd_top = getServletConfig().getServletContext().getRequestDispatcher(top);
            rd_top.include(request,response);
            //SEGUIR CON HTML
            out.write("<div style=\"width:100%;\">"+"\n");
            out.write("<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">"+"\n");
            out.write("<tr>"+"\n");
            out.write("<td width=\"100%\" align=\"left\">DATOS DE LA SESI&Oacute;N ("+conectar.ObtenerUsuarioFull()+", Hora: <span id=\"reloj\"></span>)</td>"+"\n");
            out.write("</tr>"+"\n");
            out.write("</table>"+"\n");
            out.write("</div>"+"\n");
            out.write("<div id=\"todo\" style=\"background-image:url(/jde/img/logo_fondo.png); height:250px; background-repeat:no-repeat; background-position:center;\">"+"\n");
            out.write("<div style=\"text-align:center; font-weight:bold; background-color:#99ffcc; border:1px solid #666; padding:4px 4px 4px 3px;\">NOTIFICAR PAGO A PROVEEDORES</div>"+"\n");
            out.write("<div style=\"margin-bottom:5px; border:1px solid #666; padding:4px 4px 4px 3px; text-align:center;\"><img src=\"/jde/img/check.png\" width=\"24\" height=\"24\" border=\"0\" align=\"absmiddle\" />&nbsp;NOTIFICACI&Oacute;N EN CURSO"+"\n");
            out.write("<p align=\"justify\">"+
            "Se est&aacute; enviando el correo de notificaci&oacute;n de pago a cada proveedor indicado, una vez completado el proceso se enviar&aacute; una copia a: <b>"+mail_usuario+"</b> con el detalle del correo enviado.");
            out.write("</p>"+"\n");
            out.write("</div>"+"\n");
            out.write("</div>"+"\n");
            out.write("</body>"+"\n");
            out.write("</html>"+"\n");
        }
        catch (Exception x)
        {
            //SALIDAS EN HTML
            out.write("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">");
            out.write("<html xmlns=\"http://www.w3.org/1999/xhtml\">"+"\n");
            out.write("<head>"+"\n");
            out.write("<title>Sistema de notificaci&oacute;n de Pagos a Proveedores - FCC Construcci&oacute;n de CA, S.A</title>"+"\n");
            out.write("<!--MENU-->"+"\n");
            out.write("<link rel=\"stylesheet\" href=\"/jde/scripts/menu/menu-bar.css\" media=\"screen\" type=\"text/css\">"+"\n");
            out.write("<script type=\"text/javascript\" src=\"/jde/scripts/menu/menu-for-applications.js\"></script>"+"\n");
            out.write("<link rel=\"stylesheet\" href=\"/jde/scripts/menu/menu-item.css\" media=\"screen\" type=\"text/css\">"+"\n");
            out.write("<script language=\"javascript\" type=\"text/javascript\">"+"\n");
            out.write("window.onload = function()"+"\n");
            out.write("{"+"\n");
            out.write("Reloj();"+"\n");
            out.write("var menuModel = new DHTMLSuite.menuModel();"+"\n");
            out.write("menuModel.addItemsFromMarkup('menuModel');"+"\n");
            out.write("menuModel.setMainMenuGroupWidth(00);"+"\n");
            out.write("menuModel.init();"+"\n");
            out.write("var menuBar = new DHTMLSuite.menuBar();"+"\n");
            out.write("menuBar.addMenuItems(menuModel);"+"\n");
            out.write("menuBar.setTarget('menu');"+"\n");
            out.write("menuBar.init();"+"\n");
            out.write("};"+"\n");
            out.write("function Reloj()"+"\n");
            out.write("{"+"\n");
            out.write("var fecha = new Date ();"+"\n");
            out.write("var hora = fecha.getHours ( );"+"\n");
            out.write("var minuto = fecha.getMinutes ( );"+"\n");
            out.write("var segundo = fecha.getSeconds ( );"+"\n");
            out.write("minuto = (minuto < 10 ? \"0\" : \"\") + minuto;"+"\n");
            out.write("segundo = (segundo < 10 ? \"0\" : \"\") + segundo;"+"\n");
            out.write("var tiempo = (hora < 12 ) ? \"A.M\" : \"P.M\";"+"\n");
            out.write("hora = (hora > 12) ? hora - 12 : hora;"+"\n");
            out.write("hora = (hora == 0) ? 12 : hora;"+"\n");
            out.write("var cadena_hora = hora + \":\" + minuto + \":\" + segundo + \" \" + tiempo;"+"\n");
            out.write("document.getElementById(\"reloj\").innerHTML = \"<b>\"+cadena_hora+\"</b>\";"+"\n");
            out.write("setTimeout(\"Reloj()\",1000);"+"\n");
            out.write("}"+"\n");
            out.write("</script>"+"\n");
            out.write("</head>"+"\n");
            out.write("<body style=\"font-family:Verdana, Geneva, sans-serif; font-size:11px;\">"+"\n");
            //INCLUIR TOP.JSP
            String top = "/Pagos/home/top.jsp";
            RequestDispatcher rd_top = getServletConfig().getServletContext().getRequestDispatcher(top);
            rd_top.include(request,response);
            //SEGUIR CON HTML
            out.write("<div style=\"width:100%;\">"+"\n");
            out.write("<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">"+"\n");
            out.write("<tr>"+"\n");
            out.write("<td width=\"100%\" align=\"left\">DATOS DE LA SESI&Oacute;N (ERROR, Hora: <span id=\"reloj\"></span>)</td>"+"\n");
            out.write("</tr>"+"\n");
            out.write("</table>"+"\n");
            out.write("</div>"+"\n");
            out.write("<div id=\"todo\" style=\"background-image:url(/jde/img/logo_fondo.png); height:250px; background-repeat:no-repeat; background-position:center;\">"+"\n");
            out.write("<div style=\"margin-bottom:5px; font-weight:bold; background-color:#99ffcc; border:1px solid #666; padding:4px 4px 4px 3px; text-align:center;\">NOTIFICAR PAGO A PROVEEDORES</div>"+"\n");
            out.write("<div style=\"margin-bottom:5px; background-color:red; color:white; border:1px solid #666; padding:4px 4px 4px 3px; text-align:center;\"><b>SE PRODUJO UN ERROR EN EL SISTEMA, ES POSIBLE QUE LOS DATOS NO SE GUARDARAN</b></div>"+"\n");
            out.write("<p align=\"left\"><b>Favor enviar al administrador el siguiente mensaje de error:</b><br/><br/>"+new db.Utilidades().ObtenerStringStackTrace(x)+"</p>"+"\n");
            out.write("</div>"+"\n");
            out.write("</body>"+"\n");
            out.write("</html>"+"\n");
        }
        finally
        {
            out.flush();
            out.close();
        }
    }

    public void EnviarCorreoAProveedores(Connection conex,String compania,String proveedores[],String usuario,String mail_usuario,String fecha)
    {
        //OBJETO UTILIDADES
        db.Utilidades utilidades = new db.Utilidades();
        Statement s = null;
        ResultSet rs = null;
        PreparedStatement pst = null;
        String consulta = null,mail_proveedor = null,html = null,nombres_usuario = null;
        InputStream input = null;
        URL ruta = getClass().getResource("/Pagos/Reportes/DetallePagosProveedor.jasper");
        JasperReport reporte = null;
        JasperPrint jasperPrint = null;
        //MAPA DE PARAMETROS
        Map <Object,Object>mapa = new HashMap<Object,Object>();
        try
        {
            //RECORRIDO DE PROVEEDORES POR TABLA DE DATOS
            s = conex.createStatement();
            for (int i=0; i<proveedores.length; ++i)
            {
                consulta = "select pag_dat_compania,pagos_dat_prov,pagos_dat_mail_prov,pagos_dat_fecha_notificacion,pagos_dat_usuario"+
                " from F55_PAGOS_DATOS"+
                " where pag_dat_compania like "+"'"+compania+"'"+" and pagos_dat_prov like "+"'"+proveedores[i]+"'"+
                " and pagos_dat_usuario like "+"'"+usuario+"'"+" and pagos_dat_fecha_notificacion = "+"'"+fecha+"'";
                rs = s.executeQuery(consulta);
                if ((rs != null)&&(rs.next()))
                {
                    mail_proveedor = rs.getString("pagos_dat_mail_prov");
                    reporte = (JasperReport)JRLoader.loadObject(ruta);
                    mapa.put("compania",compania);
                    mapa.put("proveedor",proveedores[i]);
                    mapa.put("nombre_proveedor",utilidades.ObtenerNombreProveedor(conex,Float.parseFloat(proveedores[i])));
                    mapa.put("usuario",usuario);
                    mapa.put("fecha",fecha);
                    //GENERAR PDF A ADJUNTAR EN EL CORREO
                    jasperPrint = JasperFillManager.fillReport(reporte,mapa,conex);
                    JasperManager.printReportToPdfFile(jasperPrint,"/tmp/jde/DetallePagos"+proveedores[i]+".pdf");
                    //CREAR ADJUNTO DE CORREO
                    EmailAttachment adjunto = new EmailAttachment();
                    adjunto.setDisposition(EmailAttachment.ATTACHMENT);
                    adjunto.setPath("/tmp/jde/DetallePagos"+proveedores[i]+".pdf");
                    //PREPARAR CORREO
                    HtmlEmail email = new HtmlEmail();
                    email.setHostName("mail.fcc-ca.com");
                    email.setCharset("ISO-8859-1");
                    email.addTo(mail_proveedor,mail_proveedor);
                    //COPIA DE CORREO AL USUARIO QUE NOTIFICA
                    nombres_usuario = utilidades.ObtenerNombreUsuario(conex,usuario);
                    email.addBcc(mail_usuario,nombres_usuario);
                    email.setFrom("pagos@fcc-ca.com","Sistema de notificación de pagos a Proveedores");
                    email.setAuthentication("pagos@fcc-ca.com","9vL+)@s%");
                    email.setSubject("Notificación de pago.");
                    email.attach(adjunto);
                    String datos_compania[] = utilidades.ObtenerTelefonoFaxCompania(compania);
                    html =
                    "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">"+
                    "<html>"+"\n"+
                    "<body style=\"font-family:Verdana, Geneva, sans-serif; font-size:11px;\">"+"\n"+
                    "<span style=\"font-size:12px; text-align:left;\"><b>Estimado Proveedor:</b>.</span>"+"\n"+
                    "<p align=\"justify\">Le informamos que hemos procesado el pago de la(s) factura(s) que se detalla(n) en el documento adjunto, por lo que puede retirar el (los) cheque(s) en nuestras oficinas o bien consultar transferencia (as) bancarias correspondiente(s).<br/><br/>"+
                    "Cualquier consulta adicional sobre este pago, favor contactar con nuestro Departamento de Contabilidad.<br/><br/>"+
                    "Esta es una notificaci&oacute;n autom&aacute;tica, por lo que solicitamos no responder este correo.<br/><br/>"+
                     "Atentamente,</p>"+
                    "<p align=\"left\"></p>"+"\n"+
                    "<font style=\"font-family:Arial, Helvetica, sans-serif; font-weight:bold; font-size:13px; color:#002060\">"+
                    "SISTEMA DE NOTIFICACION DE PAGOS A PROVEEDORES</font><br/>"+"\n"+
                    "<font style=\"font-family:Arial, Helvetica, sans-serif; font-weight:bold; font-size:13px; color:#002060\">"+
                    datos_compania[0]+"</font><br />"+"\n"+
                    "<font style=\"font-family:Arial, Helvetica, sans-serif; font-size:11px; color:#000000\">"+
                    "Tel&eacute;fono: "+datos_compania[1]+"</font><br>"+"\n"+
                    "<font style=\"font-family:Arial, Helvetica, sans-serif; font-size:11px; color:#000000\">"+
                    "Fax: "+datos_compania[2]+"</font><br>"+"\n"+
                    "<font style=\"font-family:Arial, Helvetica, sans-serif; font-size:11px; color:#000000\"><a href=\"http://www.fcc-ca.com\">www.fcc-ca.com</a></font><br>"+"\n"+
                    "<font style=\"font-family:Arial, Helvetica, sans-serif; font-size:11px; color:#000000\"><a href=\"http://www.fcc.es\">www.fcc.es</a></font><br>"+"\n"+
                    "<hr/>"+"\n"+
                    "<font style=\"font-family:Arial, Helvetica, sans-serif; font-weight:bold; font-size:10px; color:#000000\">Aviso de confidencialidad</font><br>"+"\n"+
                    "<font style=\"font-family:Arial, Helvetica, sans-serif; font-size:10px; text-align:justify; color:#0000000\">Este correo y la informaci&oacute;n contenida o adjunta al mismo es privada y confidencial y va dirigida exclusivamente a su destinatario. GRUPO FCC informa a quien pueda haber recibido este correo por error que contiene informaci&oacute;n confidencial, cuyo uso, copia, reproducci&oacute;n o distribuci&oacute;n est&aacute; expresamente prohibida. Si no es usted el destinatario del mismo y recibe este correo por error, le rogamos lo ponga en conocimiento del emisor y proceda a su eliminaci&oacute;n sin copiarlo, imprimirlo o utilizarlo de ning&uacute;n modo. Este mensaje ha sido analizado con el sistema antivirus de FCC. No obstante, no se garantiza que pueda contener un virus de nueva aparici&oacute;n.</font><br>"+"\n"+
                    "<font style=\"font-family:Arial, Helvetica, sans-serif; font-weight:bold; font-size:11px; text-align:justify; color:#009900\"><span style=\"font-family:Webdings; font-size:13px;\">P</span> Antes de imprimir este correo piensa si es realmente necesario.</font>"+"\n"+
                    "</body>"+"\n"+
                    "</html>";
                    email.setHtmlMsg(html);
                    email.send();
                    //OBTENER BINARIO DEL ARCHIVO GENERADO
                    input = new FileInputStream("/tmp/jde/DetallePagos"+proveedores[i]+".pdf");
                    //GUARDAR DATOS EN LA BD
                    pst = conex.prepareStatement("insert into F55_PAGOS_MAIL values"+
                    "("+"'"+compania+"'"+","+"'"+proveedores[i]+"'"+","+"'"+mail_proveedor+"'"+","+"'"+usuario+"'"+","+"'"+fecha+"'"+",?)");
                    pst.setBinaryStream(1,input,input.available());
                    pst.executeUpdate();
                    pst.close();
                    //ELIMINAR ARCHIVO PDF
                    File archivo = new File("/tmp/jde/DetallePagos"+proveedores[i]+".pdf");
                    if (archivo.exists() == true)
                        archivo.delete();
                }
                rs.close();
            }
        }
        catch (Exception ex)
        {
            try
            {
                //FORMATO DE FECHA NORMAL
                SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyy HH:nmm:ss");
                String fecha_log = sdf.format(new Date());
                String error = utilidades.ObtenerStringStackTrace(ex);
                BufferedWriter out = new BufferedWriter(new FileWriter("/srv/tomcat6/webapps/jde/log/log-"+fecha_log+".txt"));
                out.write(error);
                out.close();
            }
            catch (Exception x)
            {
                x.printStackTrace();
            }
        }
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException
    {
        processRequest(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException
    {
        processRequest(request, response);
    }
}